The present invention relates to the field of development of graphical user interfaces (GUIs). More specifically, the present invention relates to the field of rapid development of GUIs.
The Evolution of GUIs
As semiconductor-processing power increases and computer architecture improves, the overall performance of computer hardware has improved exponentially. More sophisticated computer software evolved to take advantage of the higher performance of the hardware and to offer richer functionality. The task of developing an appropriate interface between the application and the user became more and more difficult, as software applications became more complex.
Before the advent of the user interface (UI), commands to a software application were provided by text menus. The output of the processing done by the application was also displayed in text format. As software applications became more complex, the number of inputs from the user and the display needs increased significantly. Taking input and displaying output in text formats was found to be an inadequate way of handling the interaction between the application and the user. Hence, GUIs were developed to provide a more user-friendly paradigm.
Early GUIs were developed for computer operating systems with Apple and Microsoft taking the lead. Application developers of big enterprise-wide applications followed the lead and started developing GUIs for their applications. Today, almost all applications come with a GUI in conjunction with a mouse, a keyboard or a touch screen to select various options. For example, all the enterprise resource planning applications like SAP™, present data differently to different users depending on their requirements. Similarly, various desktop applications use GUIs extensively for providing a user-friendly interface to allow the user input data and to present output. For example, various applications for media manipulation and technical analysis like AnSyS™, AutoCAD™, MATLAB™, etc. use GUIs extensively for user input and for displaying output. Therefore, development of the GUI has become integral to the development of any software application.
Historically, application logic was coded on the server in the mainframe computer. In this architecture, no GUIs were developed as the entire application logic was coded on the mainframes. Later on client server architecture was introduced. With the introduction of client-server architecture, application logic was coded and deployed on the client side as well. Thus, GUIs were developed accordingly and installed on the client side. In present day network architecture, GUI applications are coded to deal with the presentation layer only. As a result, the presentation layer is distinct from the data access layer and logic layer.
GUI Development Process and Challenges
GUI development is an integral part of any software development effort that requires user interaction. Despite significant advances in software development methodologies, architecture and tools, the pace and ease of GUI development and modifications is inadequate.
In a contemporary layered architecture, GUI development is largely limited to coding the presentation of information to the users, validating and capturing user actions and interfacing with the application's logic and data access layers. In older architectural paradigms, GUI development may also involve the development of application logic and/or data access functionality.
The conventional way to develop GUIs is to go through a software development lifecycle (SDLC). As shown in FIG. 1, an SDLC consists of various stages as an idea gets converted into a software application. At each stage, output from the previous stage is translated to serve the purpose of the current stage. In such a cycle, unless one stage of the cycle is complete, next stage cannot be started. Also, with each translation, an effort is made to preserve full information and knowledge from the previous stage. Thus, a significant amount of overhead is created at each stage. As a result, traditional SDLC results in a time-consuming development of complex and cumbersome software applications for GUIs.
Methodological Improvements and their Impact on GUI Development
One of the major hurdles in GUI development is the amount of time it takes from conceptualization to completion. While Prototyping tools have eased the issue somewhat, the time to market is prohibitively long. There is a need to dramatically reduce the time to market in GUI development.
Another hurdle in GUI development has been the lack of inter-operability across operating platforms. Obviously, this increased the time and effort to develop GUIs for cross-platform applications. The advent of the Java™ programming language has alleviated the challenge considerably. Java™, originally developed by Sun Microsystems, is an object-oriented, multi-threaded, portable, platform-independent, secure programming environment used to develop, test and maintain software programs. A Java™ virtual machine is used to run a single Java™ source code on all the platforms, thereby substantially decreasing the efforts required in GUI generation.
While Java has enabled inter-operability, the emergence of network centric computing and the Internet have made browser based GUIs the presentation medium of choice. Designers face two broad challenges in this context. First, they have to choose amongst multiple programming options on which to develop the GUIs, e.g. Java Server Pages, Active Server Pages, etc. Second, there are considerable challenges if a designer wants to develop the same GUI on a browser and on the desktop. In most cases, the designer has to develop the GUIs twice, once for the browser and once for the desktop.
Another hurdle in GUI development is the rapid evolution of GUI development environments and frameworks and the need for people skilled in these environments. Today, a diverse range of options exists with different capabilities suited for different applications. Hence, there is a requirement for a GUI development tool that allows GUI generation without the knowledge of any programming languages.
To accelerate the process, various GUI development tools are available today. A GUI development tool is a software product used to facilitate rapid development of GUIs by automating some of the repetitive tasks. Currently available visual development tools automate the process of GUI development to a large extent. Developers can drag/drop various GUI components into the main window and the corresponding code snippets are automatically added to the main code. Hence, a substantial decrease in development time is achieved. However, there are various hurdles in the rapid development of GUIs.
All GUI development tools today are code generators and some of them provide visual development tools like Microsoft Visual Studio, Visual Café, Jbuilder, etc. These tools generate code in the specified language, which is then compiled and deployed. Since the output of all these tools are in the form of code in a programming language, they require expert knowledge of the programming environment. These tools are complete application development environments and do not allow the generation of GUIs independent of the application. Development tools based on Extensible Markup Language [XML] and Extensible Style Sheets [XSLT] do allow the generation of GUIs but require specialized programming skills.
Related Patents and Products
Various systems have been proposed to overcome one or more of the above shortcomings. A WIPO Patent application No. 0072184, Entitled “A Platform Independent System Of Specifying An Embedded User Interface” of Matsushita Mobile Communication Development Corp. of USA, discloses a development tool for developing embedded user interfaces. The patent discloses a system of storing and generating a user interface in the form of elements and parameters. These elements and parameters describe various aspects of the user interface including the form of presentation to the user and response to the user feedback. A User Interface Engine residing within a target device (like mobile phones and various electronic gadgets) monitors user events and displays the user interface in accordance with the elements and parameters.
Another system as disclosed in U.S. Pat. No. 6,025,836, entitled “Method And Apparatus For Generating Object Oriented User Interfaces” assigned to Novell, Inc., develops object oriented user interfaces. The User Interface Generator creates separate class files containing user interfaces suitable for use in different languages. The invention aims to achieve reusability and rapid generation of complex user interfaces to minimize costs associated with internationalization of software applications.
Yet another U.S. Pat. No. 6,342,907, entitled “Specification Language For Defining User Interface Panels That Are Platform-independent” assigned to International Business Machines (IBM), specifies a specification language to allow a developer to define platform-independent user interface panels without a detailed knowledge of complex computer programming languages. A Panel Definition Markup Language (PDML) is defined in accordance with the Extensible Markup language (XML) standards. Java Swing is used to generate user interfaces. A graphical editor allows the creation and modification of platform-independent user interface panels without programming directly in the specification language. A run-time manager for different platforms process PDML panels to display the panels.
All the abovementioned patents and products require the GUI developer to do some coding for generating GUIs. Moreover, some of them primarily focus on GUIs for embedded systems. No generalized solution is available that does not require any coding for GUI generation. Also, these patents and products focus on one or more of narrow problems, like controlling the exact location of user interface objects using Java™ swing. None of the patents and products addresses the abovementioned drawbacks of the GUI development process at a broader level. Hence, there is a need for a system that addresses all the abovementioned issues.